using System.CodeDom;
using CodeDomHelper.Types;
using System;
using System.Diagnostics;

namespace CodeDomHelper.CodeDom
{


    [DebuggerDisplay("{EventName}", Name = "EventExp")]
    [Serializable()]
    [System.Diagnostics.DebuggerStepThrough()]
    public partial class EventExp : CodeEventReferenceExpression
    {
        public EventExp()
            : base()
        {
            
        }

        public EventExp(System.CodeDom.CodeExpression targetObject, System.String eventName)
            : base(targetObject, eventName)
        {

        }

        #region Property

        public PropertyExp Property(string propertyName, string typeName)
        {
            return new PropertyExp(this, propertyName, typeName);
        }

        public PropertyExp Property(string propertyName, TypeExp type)
        {
            return new PropertyExp(this, propertyName, type);
        }

        public PropertyExp Property(string propertyName, Type type)
        {
            return new PropertyExp(this, propertyName, type);
        }

        public PropertyExp Property(string propertyName, TypeExpression type)
        {
            return new PropertyExp(this, propertyName, type);
        }

        #endregion

        #region Field

        public FieldExp Field(string fieldName, string typeName)
        {
            return new FieldExp(this, fieldName, typeName);
        }

        public FieldExp Field(string fieldName, TypeExp type)
        {
            return new FieldExp(this, fieldName, type);
        }

        public FieldExp Field(string fieldName, Type type)
        {
            return new FieldExp(this, fieldName, type);
        }

        public FieldExp Field(string fieldName, TypeExpression type)
        {
            return new FieldExp(this, fieldName, type);
        }

        #endregion

    }

}
